﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using Flores.ProgramacionWCF.Entidades;
using System.Data;

namespace Flores.ProgramacionWCF.Datos
{
    public class ProgramacionDAO
    {

        public List<Programacion> BuscarProgramacion(string Origen, string Destino, DateTime FechaIni, DateTime FechaFin, int Boletos)
        {

            List<Entidades.Programacion> prgList = new List<Entidades.Programacion>();
            string sql = "SELECT * FROM PLS_TB_PROGRAMACION_FLORES WHERE ORIGEN=@ORIGEN AND DESTINO=@DESTINO AND STOCK>@BOLETOS AND (FECHA BETWEEN @FECHA_INI AND @FECHA_FIN) ";
            //string sql = "SELECT * FROM PLS_TB_PROGRAMACION_FLORES WHERE ORIGEN=@ORIGEN AND DESTINO=@DESTINO AND STOCK>@BOLETOS" // AND (FECHA BETWEEN @FECHA_INI AND @FECHA_FIN) ";
            using (SqlConnection con = new SqlConnection(Conexion.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@ORIGEN", Origen));
                    com.Parameters.Add(new SqlParameter("@DESTINO", Destino));
                    com.Parameters.Add(new SqlParameter("@BOLETOS", Boletos));
                    com.Parameters.Add(new SqlParameter("@FECHA_INI", FechaIni));
                    com.Parameters.Add(new SqlParameter("@FECHA_FIN", FechaFin));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read()) //if (resultado.Read())
                        {
                            prgList.Add(new Entidades.Programacion()//objProgramacion = new Programacion()
                            {
                                idProgramacion = (string)resultado["ID_PROGRAMACION"],
                                Ruc = (string)resultado["RUC"],
                                RazSocial = (string)resultado["RAZ_SOCIAL"],
                                Fecha = (DateTime)resultado["FECHA"],
                                Origen = (string)resultado["ORIGEN"],
                                Destino = (string)resultado["DESTINO"],
                                Asientos = (int)resultado["ASIENTOS"],
                                Stock = (int)resultado["STOCK"],
                                Precio = (decimal)resultado["PRECIO"]
                                //HoraSalida = (int)resultado["HORA_SALIDA"],
                            });
                        }
                    }
                }
            }
            return prgList;
        }

        public string ActualizarProgramacion(string idProgramacion, string dni, int boletos)
        {
            //@LAC: agregado el resultado
            try
            {
                //List<Entidades.Programacion> prgList = new List<Entidades.Programacion>();
            string sql = "UPDATE PLS_TB_PROGRAMACION_FLORES SET STOCK=STOCK-@BOLETOS WHERE ID_PROGRAMACION=@IDPROGRAMACION";
            //string sql = "SELECT * FROM PLS_TB_PROGRAMACION_FLORES WHERE ORIGEN=@ORIGEN AND DESTINO=@DESTINO AND STOCK>@BOLETOS" // AND (FECHA BETWEEN @FECHA_INI AND @FECHA_FIN) ";
            using (SqlConnection con = new SqlConnection(Conexion.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@BOLETOS", boletos));
                    com.Parameters.Add(new SqlParameter("@IDPROGRAMACION", idProgramacion));
                    com.ExecuteNonQuery();
                }
            }

            return "SI";
            }
            catch (Exception)
            {
                return "NO";
            }
        }
    }
}